//
//  StatusViewModel.swift
//  XinLangWeibo10
//
//  Created by 白利兵 on 15/10/20.
//  Copyright © 2015年 itheima. All rights reserved.
//

import UIKit
// 单条微博的简单视图模型
class StatusViewModel {

    // 微博模型
    var status: Status
    /// 缩略图URL数组 - 存储型属性 !!!
    /// 如果是原创微博，可以有图，可以没有图
    /// 如果是转发微博，一定没有图，retweeted_status 中，可以有图，也可以没有图
    /// 一条微博，最多只有一个 pic_urls 数组
    var thumbnail_pic: [NSURL]?
    // 构造初始化方法
    init (status: Status){
        self.status = status
        thumbnail_pic = [NSURL]()
        // 判断转发配图数组是否有值，若没有，则判断原创视图
        if let urlList = status.retweeted_status?.pic_urls ?? status.pic_urls{
            // 遍历数组
            for urlDict in urlList {
                thumbnail_pic?.append(NSURL(string: urlDict["thumbnail_pic"]!)!)
            }
        }
    }
    /// 可重用标示符
    lazy var reuseID: String  = {
        if self.status.retweeted_status != nil {
            return statusRetweetedCellreuseID
        }
        else {
            return statusNormalCellreuseID
        }
    }()
    /// 懒加载cell高度
    lazy var rowHeight: CGFloat = {
        
        // 获取cell
        if self.status.retweeted_status != nil {
            let cell = StatusRetweetedCell(style: .Default, reuseIdentifier: statusRetweetedCellreuseID)
            // 调用行高计算方法
            return cell.changeRowHeight(self)
        }
        let cell = StatusNormalCell(style: .Default, reuseIdentifier: statusNormalCellreuseID)
        // 调用行高计算方法
        return cell.changeRowHeight(self)
    }()
    /// 用户头像 ()URL
    var userProfileUrl: NSURL {
        return NSURL(string: status.user?.profile_image_url ?? "")!
    }
    /// 用户默认头像
    var userDefaultIconView: UIImage {
        return UIImage(named: "avatar_default_big")!
    }
    /// 用户会员图标
    var userMemberImage: UIImage? {
        
        // 根据 mbrank 来生成图像
        if status.user?.mbrank > 0 && status.user?.mbrank < 7 {
            return UIImage(named: "common_icon_membership_level\(status.user!.mbrank)")
        }
        return nil
    }
    /// 用户认证图标
    /// 认证类型，-1：没有认证，0，认证用户，2,3,5: 企业认证，220: 达人
    var userVipImage: UIImage? {
        
        switch(status.user?.verified_type ?? -1) {
        case 0: return UIImage(named: "avatar_vip")
        case 2, 3, 5: return UIImage(named: "avatar_enterprise_vip")
        case 220: return UIImage(named: "avatar_grassroot")
        default: return nil
        }
    }
    
    
    var retweetedText: String? {
        
        // 1. 判断是否是转发微博，如果不是直接返回 nil
        guard let s = status.retweeted_status else {
            return nil
        }
        
        // 2. s 就是转发微博
        return "@" + (s.user?.screen_name ?? "") + ":" + (s.text ?? "")
    }
    // 重写description
//    override var description: String {
//        let keys
//    }
}
